دسته بندی ها
18:36 1398/07/05

آپلود فایل در Asp.net core چگونه است؟

مشخصات سوال کننده :
کاربر : AliNoori     امتیاز کاربر : 136     رتبه کاربر : 11
دسته بندی : Asp.net Core

به این سوال امتیاز بدهید    1
تعداد بازدید این سوال : 4998
پاسخ دهنده : saedbfd 23:24 1398/07/26

برای آپلود عکس به صورت صحیح می تونید این لینک رو مطالعه بفرمایید.

همچنین کدهای مورد نیاز برای آپلود عکس رو در ادامه می نویسم. سعی کنید دقیقا مشابه عمل کنید. 

یک کلاس برای آپلود فایل ایجاد کنید با کدهای زیر

 public class UploadFile : IUploadfile
    {
        private readonly IHostingEnvironment _appEnvironment;
        public UploadFile(IHostingEnvironment appEnvironment)
        {
            _appEnvironment = appEnvironment;
        }

        public string UploadFiles(IEnumerable<IFormFile> files,string uploadPath,string uploadthumbnailPath)
        {
            var upload = Path.Combine(_appEnvironment.WebRootPath,uploadPath);
            var filename = "";
            foreach (var file in files)
            {
                filename = Guid.NewGuid().ToString().Replace("-", "") + Path.GetExtension(file.FileName);
                using (var fs = new FileStream(Path.Combine(upload, filename), FileMode.Create))
                {
                    file.CopyTo(fs);
                }
            }
            return filename;
        }



    }

 

پس از اون یک اینترفیس برای استفاده از کلاس در کنترلر ایجاد کنید

    public interface IUploadfile
    {
        string UploadFiles(IEnumerable<IFormFile> files, string uploadPath, string uploadthumbnailPath);
    }

 

و در کنترلر میتونید به شکل زیر استفاده کنید :

        public async Task<IActionResult> UploadFile(IEnumerable<IFormFile> files)
        {
            string filename = _upload.UploadFiles(files, "path\\", "");
            return Json(new { status = "success", message = "تصویر با موفقیت آپلود شد.", imagename = filename });
        }

 

همچنین از کدهای جی کوئری زیر نیز در ویو استفاده کنید:

 

     <form asp-area="AdminPanel" asp-controller="User" asp-action="Create" method="post" enctype="multipart/form-data">

 

            @* تصویر *@
            <div class="form-group">
                <label asp-for="UserImage" class="control-label"></label>
                <div class="form-horizontal">
                    <input asp-for="UserImage" type="file" id="files" name="files"/>
                    <input type="button" onclick="UploadImage()" id="btnupload" class="btn btn-info" value="آپلود و نمایش تصویر" />
                </div>
                <span asp-validation-for="UserImage" class="text-danger"></span>
            </div>

            <div class="form-group">
                <input type="submit" value="ایجاد" class="btn btn-success" />
                <a asp-action="Index" class="btn btn-danger">بازگشت</a>
            </div>

        </form>


@section PanelScripts{

    <script>
        var UploadImage = function () {
            var data = new FormData;
            var file = $("#files").get(0);
            var files = file.files;

            for (var i = 0; i < files.length; i++) {
                data.append('files', files[i]);
            }

            $.ajax({
                type: "post",
                url: '@Url.Action("UploadFile","ControllerName")',
                data: data,
                contentType: false,
                processData: false,
            }).done(function (result) {
                if (result.status == "success") {

                    $("#imguser").attr('src', "\\upload\\userimage\\normalimage\\" + result.imagename);

                    alert("تصویر با موفقیت آپلود شد");
                    }
                }).fail(function (result) { 
                 
                    alert("ایجاد خطا");
                    }
                });
        }
    </script>
}

 

 

ویرایش شده در جمعه 7 مرداد 1401 ساعت 20:55:32
به این پاسخ امتیاز بدهید    2
امتیاز: 1654 رتبه: 1
پاسخ دهنده : AliNoori 23:24 1398/07/26

تشکر استاد عزیز . مشکل کاملا حل شد . واقعا تشکر میکنم 

به این پاسخ امتیاز بدهید    0
امتیاز: 136 رتبه: 11
برای ارسال پاسخ لطفا وارد حساب کاربری خود شوید.   ورود